home *** CD-ROM | disk | FTP | other *** search
/ Java for 3D & VRML Worlds / Java for 3d and VRML Worlds.iso / examples / chap06 / DynamicGen.java < prev    next >
Text File  |  1996-09-27  |  2KB  |  62 lines

  1. //
  2. // dynamic generation of geometry nodes
  3. //
  4.  
  5. import java.util.*;
  6. import vrml.*;
  7. import vrml.node.*;
  8. import vrml.field.*;
  9.  
  10. public class DynamicGen extends Script{
  11.     MFNode addSphere;
  12.     Random randomNumGenerator = new Random();
  13.     float posX = 0.0f;
  14.     
  15.     public void initialize(){
  16.         // get the reference of the event-out 'addSphere'.
  17.         addSphere = (MFNode)getEventOut("addSphere");
  18.     }
  19.     
  20.     public void processEvent(Event e){
  21.         if(e.getName().equals("touched") == true){
  22.             String sphereDesc1 =
  23.                 "Transform {" +
  24.                 "    translation ";
  25.             String sphereDesc2 =
  26.                 "        0.0 0.0 " +
  27.                 "    children[" +
  28.                 "    Shape{geometry Sphere{}" +
  29.                 "          appearance Appearance{" +
  30.                 "              material Material{diffuseColor ";
  31.             String sphereDesc3 =
  32.                 "              }" +
  33.                 "          }" +
  34.                 "    }" +
  35.                 "    ]" +
  36.                 "}";
  37.  
  38.             float red = randomNumGenerator.nextFloat();
  39.             float green = randomNumGenerator.nextFloat();
  40.             float blue = randomNumGenerator.nextFloat();
  41.  
  42.             Browser browser = getBrowser();
  43.             BaseNode baseNodes[];
  44.  
  45.             // next position.
  46.             posX += 3.0f;
  47.  
  48.             try{
  49.                 baseNodes = browser.createVrmlFromString(sphereDesc1 + posX +
  50.                                                          sphereDesc2 + red + " " +
  51.                                                          green + " " +
  52.                                                          blue + sphereDesc3);
  53.                 if(null != baseNodes) {
  54.                     addSphere.setValue(baseNodes);
  55.                 }
  56.             } catch (Exception ex) {
  57.                 ex.printStackTrace() ;
  58.             }
  59.         }
  60.     }
  61. }
  62.